Transmission Control Protocol (TCP) is a common transport layer protocol used for controlling packet loss by using end-to-end retransmission of lost packets. In many networks, such as traditional Internet Protocol (IP) networks, packet loss is more commonly caused by conditions that occur as a result of congestion, e.g., buffer overflows, link over-utilization, and the like, rather than other failures that are not the result of congestion, e.g., bit errors, link errors, and the like. As such, TCP congestion control mechanisms were designed based on the idea that all packet loss is indicative of congestion.
Since TCP assumes that all packet losses are caused as a result of congestion, in response to all packet losses, TCP implements processes to control congestion, such as reducing a congestion window size. Unfortunately, since not all packet losses are due to congestion, TCP incorrectly attempts to control congestion in response to both packet loss caused by congestion, as well as packet loss not caused by congestion. Disadvantageously, use of congestion control when packet loss is not caused by congestion results in underutilized networks, decreased network throughput, and poor end-to-end network performance.